from multiprocessing import Process, Queue, Manager


#
# def run1(que):
#     print('子进程放入数据')
#     que.put(1)
#     que.put(2)
#     que.put(3)
#
#
# if __name__ == '__main__':
#     que = Queue()  # 创建队列对象
#     p = Process(target=run1, args=(que,))
#     p.start()
#     p.join()
#     print('主进程获取数据', que.get())
#     print('主进程获取数据', que.get())
#     print('主进程获取数据', que.get())
#     # 如果队列中没有数据了， 会阻塞等待
#     # print('主进程获取数据', que.get())
#     # 在timeout时间内还没有数据，抛出异常
#     print('主进程获取数据', que.get(timeout=3))
#

#
# # 进程通信,字典
#
# def run(Dict):
#     print('子进程放入数据')
#     Dict['name'] = 'lucky'
#     Dict['age'] = '18'
#
#
# if __name__ == '__main__':
#     Dict = Manager().dict()
#     p = Process(target=run, args=(Dict, ))
#     p.start()
#     p.join()
#     print('主进程获取数据', Dict)


# 进程通信，列表
def run(List):
    print('子进程放入数据')
    List.append('lucky')
    List.append(18)


if __name__ == '__main__':
    List = Manager().list()
    p = Process(target=run, args=(List, ))
    p.start()
    p.join()
    print('主进程获取数据', List)
